package com.example.fndemo;

/**
 * 代码重构初始代码。
 * 1、提取计算总分的方法
 * 2、合并重复的循环
 * 3、提取判断等级的方法，不打印，仅返回等级
 * 4、定义等级阈值常量
 */
public class ScoreStatistics {
    public static void main(String[] args) {
        double[] scores = {85.5, 92.0, -1.0, 88.5, 105.0};  // 包含无效成绩（负数和超过100的成绩）

        double total = calculateTotal(scores);

        // 计算有效成绩数量
        int validCount = 0;
        for (double score : scores) {
            if (score >= 0 && score <= 100) {  // 判断成绩是否有效（0-100之间）
                validCount++;
            }
        }
        double average = total / validCount;

        // 输出结果
        System.out.println("总分: " + total);
        System.out.println("平均分: " + average);

        // 判断等级（5个等级）
        if (average >= 90) {
            System.out.println("等级: A");
        } else if (average >= 80) {
            System.out.println("等级: B");
        } else if (average >= 70) {
            System.out.println("等级: C");
        } else if (average >= 60) {
            System.out.println("等级: D");
        } else {
            System.out.println("等级: E");
        }
    }

    private static double calculateTotal(double[] scores) {
        // 计算总分
        double total = 0.0;
        for (double score : scores) {
            if (score >= 0 && score <= 100) {  // 判断成绩是否有效（0-100之间）
                total += score;
            }
        }
        return total;
    }
}
